//
// Created by mgepahmge on 2025/10/14.
//

#ifndef MYAMG_TESTCASES_CUH
#define MYAMG_TESTCASES_CUH
#include <vector>
#include <unordered_map>
#include <string>

void testSpmvHost();

void testSpmvDevice();

void profileSpmvHost();

void profileSpmvDevice();

void testYHMatrix2Matrix();

void profileSORDevice(int batch, std::vector<std::unordered_map<std::string, double>>& error);

void profileSOR();

void searchSORDevice(int batch, std::vector<std::unordered_map<std::string, double>>& error, int maxIter = 1);

int testYHAMGJacobi(int argc, char* argv[]);

void testJacobiDevice(const int batch, std::vector<std::unordered_map<std::string, double>>& error);

void testJacobiDeviceAll(int batch);

void testJacobiSmoother();

void testVectorClear();

void testRAP();

void profileDot(const int size, const int iter);

int profileJacobiBiCGStab(int argc, char* argv[]);

int profileSORBiCGStab(int argc, char* argv[]);

#endif //MYAMG_TESTCASES_CUH